home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir31 / vtsrc12b.zip / SHELLVT.PAS < prev    next >
Pascal/Delphi Source File  |  1993-03-31  |  3KB  |  132 lines

  1. PROGRAM ShellVT;
  2.  
  3. {$M 20000, 0, 655360}
  4.  
  5. USES Dos,
  6.      VTSpecial, VTGlobal, VTCfg, VTCmd, 
  7.      SoundDevices, DevSB, DevSbDac, DevDAC, DevSpkr, DevAdlib,
  8.      PlayMod, ModCommands, SongUnit, SongUtils,
  9.      CmdLine, Heaps, Debugging, FileUtil;
  10.  
  11.  
  12.  
  13.  
  14. VAR
  15.   NoMods : BOOLEAN;
  16.  
  17. FUNCTION DoOneMOD(FName: PathStr; InsidePath: PathStr) : BOOLEAN; FAR;
  18.   VAR
  19.     Song     : TSong;
  20.     HeapSize : LONGINT;
  21.   BEGIN
  22.     NoMods   := FALSE;
  23.     DoOneMOD := TRUE;
  24.  
  25.     IF ShellLoopMod THEN
  26.       BEGIN
  27.         LoopMod      := TRUE;
  28.         ForceLoopMod := TRUE;
  29.       END;
  30.  
  31.     SetVTDevice;
  32.     SetVTFreq;
  33.     MaxOutputFreq := ActualHz;
  34.  
  35.     FillChar(UserVols, SIZEOF(UserVols), VtVolume);
  36.  
  37.     Song.Init;
  38.  
  39.     Song.SetInsidePath(InsidePath);
  40.  
  41.     IF VT1stPattern <> 0 THEN
  42.       Song.SongStart := VT1stPattern;
  43.  
  44.     IF VTSongLen <> 0 THEN
  45.       Song.SongLen := VTSongLen;
  46.  
  47.     Song.LoadFName(FName);
  48.  
  49.     IF Song.Status <= msFileTooShort THEN
  50.       BEGIN
  51.         DoOneMOD := FALSE;
  52.  
  53.         FirstPattern := VT1stPattern;
  54.         RepStart     := VTRepStart;
  55.         SongLen      := VTSongLen;
  56.  
  57.         PlayStart(Song);
  58.  
  59.         HeapSize := Heap.HTotalAvail;
  60.         ShrinkSystemHeap(0);
  61.         SwapVectors;
  62.         Exec(ShellPath, ShellParam);
  63.         SwapVectors;
  64.         ShrinkSystemHeap(HeapSize);
  65.  
  66.         PlayStop;
  67.         EndSampling;
  68.  
  69.         WriteLn;
  70.         WriteLn('┌───────────────────────┐');
  71.         WriteLn('│ ShellVT desinstalado. │');
  72.         WriteLn('└───────────────────────┘');
  73.       END
  74.     ELSE
  75.       WriteLn(#13'Error en el fichero: '+FName);
  76.  
  77.     Song.Done;
  78.   END;
  79.  
  80.  
  81.  
  82.  
  83. CONST
  84.   NombreApp = 'ShellVT';
  85.  
  86.   AppID : STRING[Length(NombreApp) + 2 + Length(Version) + Length(BetaStr)] =
  87.             NombreApp+' v'+Version+BetaStr;
  88.  
  89. VAR
  90.   s       : STRING;
  91.   i, r    : WORD;
  92.  
  93. BEGIN
  94.  
  95.   WriteLn;
  96.   WriteLn(    '    ┌───────────────────────────────────────────────────────┐');
  97.   WriteLn(    '    │ '+NombreApp+'. Versión residente del VangeliSTracker, v'+Version+' │');
  98.   WriteLn(    '    │               (C) 1992-93  VangeliSTeam               │');
  99.   WriteLn(    '    └───────────────────────────────────────────────────────┘');
  100.  
  101.   IF ParamCount = 0 THEN
  102.     BEGIN
  103.       WriteLn(' ┌─────────────────────────────────────────────────────────────────────────┐');
  104.       WriteLn(' │ ShellVT <fichero>[<.Ext>] [<disp.> [<frec.> [<programa> [parámetros]]]] │');
  105.       WriteLn(' └─────────────────────────────────────────────────────────────────────────┘');
  106.       HALT(1);
  107.     END;
  108.  
  109.   VTResidentCheck(AppID);
  110.  
  111.   Debugging.Debug := FALSE;
  112.  
  113.   InitHeapVariables;
  114.   InitUmbHeap;
  115.  
  116.   Cmd.Init;
  117.   SongColl.Init(1, 1);
  118.  
  119.   InitSoundDevices;
  120.   InitModUnit;
  121.  
  122.   DesiredHz  := ShellHz;
  123.   OneModProc := DoOneMod;
  124.  
  125.   NoMods := TRUE;
  126.  
  127.   Cmd.ParseLine(GetDOSCmdLine);
  128.   IF DoSongColl(Cmd.FileDir) THEN
  129.     IF NoMods THEN
  130.       WriteLn('No encuentro ninguna canción.');
  131. END.
  132.